home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / mpfeel.lha / MPFeel / Modules / setf.em < prev    next >
Lisp/Scheme  |  1992-10-06  |  1KB  |  42 lines

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;;                                                                           ;;
  3. ;;  EuLisp Module                     Copyright (C) University of Bath 1991  ;;
  4. ;;                                                                           ;;
  5. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  6.  
  7. (defmodule setf
  8.  
  9.   (standard0) ()
  10.  
  11.   (defmacro ++ (form . vals)
  12.     (cond ((atom form)
  13.        `(setq ,form (+ ,form 1)))
  14.       ((eq (car form) 'dynamic)
  15.        `(dynamic-setq ,(cadr form) (+ ,form 1)))
  16.       (t
  17.        `((setter ,(car form)) ,(cadr form) (+ ,form 1)))))         
  18.  
  19.   (defmacro -- (form)
  20.     (cond ((atom form)
  21.        `(setq ,form (- ,form 1)))
  22.       ((eq (car form) 'dynamic)
  23.        `(dynamic-setq ,(cadr form) (- ,form 1)))
  24.       (t
  25.        `((setter ,(car form)) ,(cadr form) (- ,form 1)))))         
  26.  
  27.   (export ++ --)
  28.  
  29.   (defmacro setf (form val)
  30.     (cond ((atom form)
  31.        `(setq ,form ,val))
  32.       ((eq (car form) 'dynamic)
  33.        `(dynamic-setq ,(cadr form) ,val))
  34.       (t
  35.            `(let ((@-woo-woo-@ ,val))
  36.           ((setter ,(car form)) ,@(cdr form) @-woo-woo-@)
  37.           @-woo-woo-@))))
  38.  
  39.   (export setf)
  40.  
  41. )
  42.